/*******************************************************************************
* Copyright (c) 2007, 2008, CerroKai Development
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*     * Redistributions of source code must retain the above copyright
*       notice, this list of conditions and the following disclaimer.
*     * Redistributions in binary form must reproduce the above copyright
*       notice, this list of conditions and the following disclaimer in the
*       documentation and/or other materials provided with the distribution.
*     * Neither the name of CerroKai Development nor the
*       names of its contributors may be used to endorse or promote products
*       derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY CerroKai Development ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL CerroKai Development BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
********************************************************************************/


#ifndef __COMPASS_H__
#define __COMPASS_H__


/*** Included Header Files ***/
#include <Scene/wscnl.h>
#include <Scene/overlay.h>


/*** Locally Defined Values ***/
#define COMPASS_LINEWIDTH						0.5
#define COMPASS_SIZE							0.75
#define COMPASS_SCALE_FACTOR					0.3


/*** Namespace Declaration ***/
namespace __WILDCAT_NAMESPACE__ {


/*** Class Predefines ***/
class WCUserInterfaceLayer;
class WCText;


/***********************************************~***************************************************/


class WCCompass : public WCOverlay {
private:
	WCText										*_xText, *_yText, *_zText;							//!< Visual text objects

	WCCompass();																					//!< Deny access to the default constructor
	WCCompass(const WCCompass &compass);															//!< Deny access to copy constructor
	WCCompass& operator=(const WCCompass &compass);													//!< Deny access to equals operator
public:
	//Constructors and Destructors
	WCCompass(WCUserInterfaceLayer *layer);															//!< Primary constructor
	~WCCompass();																					//!< Default destructor

	//Inherited Methods
	void OnReshape(void);																			//!< Modify placement on resize
	void OnMouseDown(const WCMouseButton &button, const WPFloat x, const WPFloat y);				//!< Receive message about mouse button being pressed	
	void OnMouseEnter(const WPFloat x, const WPFloat y);											//!< Modified MouseEnter
	void OnMouseExit(const WPFloat x, const WPFloat y);												//!< Modified MouseExit
	void OnMouseMove(const WPFloat x, const WPFloat y);												//!< Receive message about mouse being moved	
	void Render(void);																				//!< Render this object
};


/***********************************************~***************************************************/


}	   // End Wildcat Namespace
#endif //__COMPASS_H__

